package reflect;

import bean.User;

/**
 * 获取到Class，能肝肾们？
 * 通过Class的newInstance()方法来实例化对象。
 * 注意: newInstance()方法内部实际上调用了五参数构造方法，必须保证无参数构造方法存在才可以。
 */
public class ReflectTest02 {
    public static void main(String[] args) {
        // 不使用反射机制，创建对象
        User user = new User();
        System.out.println(user);


        // 通过反射机制创建对象
        // 通过反射机制创建对象会更加灵活。
        // 通过反射机制，获取class，通过class来创建实例化对象。
        try {
            Class c = Class.forName("bean.User");
            // newInstance()这个方法会调用User这个类的无参数构造方法，完成对象的创建。
            Object obj = c.newInstance();
            System.out.println(obj);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InstantiationException e) {
            e.printStackTrace();
        }
    }
}
